package com.tianji.learning.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tianji.common.exceptions.BizIllegalException;
import com.tianji.common.utils.BeanUtils;
import com.tianji.common.utils.UserContext;
import com.tianji.learning.domain.po.InteractionQuestion;
import com.tianji.learning.dto.QuestionFormDTO;
import com.tianji.learning.mapper.InteractionQuestionMapper;
import com.tianji.learning.service.IInteractionQuestionService;
import org.springframework.stereotype.Service;

@Service
public class InteractionQuestionServiceImpl extends ServiceImpl<InteractionQuestionMapper, InteractionQuestion> implements IInteractionQuestionService {

    @Override
    public void saveQuestion(QuestionFormDTO questionForm) {
        // 1-获取用户信息
        Long userId = UserContext.getUser();

        // 2-填充属性
        InteractionQuestion entity = BeanUtils.copyBean(questionForm, InteractionQuestion.class);
        entity.setUserId(userId);
        
        // 3-保存
        save(entity);
    }

    @Override
    public void updateQuestion(Long id, QuestionFormDTO questionForm) {
        // 1-获取当前用户的id
        Long userId = UserContext.getUser();
        
        // 2-判断当前id的问题是否存在
        InteractionQuestion question = getById(id);
        if (question == null) {
            throw new BizIllegalException("问题不存在");
        }
        
        // 3-判断当前用户是否是该问题的创建者
        if (!question.getUserId().equals(userId)) {
            throw new BizIllegalException("只能修改自己创建的问题");
        }
        
        // 4-填充属性
        InteractionQuestion updateEntity = BeanUtils.copyBean(questionForm, InteractionQuestion.class);
        updateEntity.setId(id);
        
        // 5-修改
        updateById(updateEntity);
    }

    /*
    * 删除问题
     */
    @Override
    public void deleteQuestion(Long id) {
        // 1-获取当前用户的id
        Long userId = UserContext.getUser();
        
        // 2-判断当前id的问题是否存在
        InteractionQuestion question = getById(id);
        if (question == null) {
            throw new BizIllegalException("问题不存在");
        }
        
        // 3-判断当前用户是否是该问题的创建者
        if (!question.getUserId().equals(userId)) {
            throw new BizIllegalException("只能删除自己创建的问题");
        }
        
        // 4-删除问题
        removeById(id);
    }
}